﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.Specialized;
using Inmobiliaria.Presenters.ViewInterfaces;
using Inmobiliaria.UCControllers;
using Inmobiliaria.Base;
using Inmobiliaria.Services.Core.DTO;
using System.Net.Mail;
using System.Net;
using System.Text.RegularExpressions;
using System.IO;
using System.Web;

namespace Inmobiliaria.Presenters.WFPresenters
{
    public class ContactoPresenter : Presenter
    {
        private IViewContacto viewContacto;

        public ContactoPresenter(IViewContacto view)
            : base(view)
        {
            viewContacto = view;
        }

        public override void InitView(NameValueCollection queryString)
        { }

        public void Enviar()
        {
            Validar();
            MandarConsulta();
            viewContacto.ShowMessage(Inmobiliaria.Presenters.Mensajes.ContactoExitoso);
        }

        private void MandarConsulta()
        {
            string EmailIngresado;
            if (viewContacto.Email == "")
            {
                EmailIngresado = "Vacio@gmail.com";
            }
            else
            {
                EmailIngresado = viewContacto.Email;
            }
            string TextoIngresado = "'" + viewContacto.Texto + "' ";

            string Email = "leoimoli@gmail.com";
            //Configuración del Mensaje
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
            //Especificamos el correo desde el que se enviará el Email y el nombre de la persona que lo envía
            mail.From = new MailAddress("'" + EmailIngresado + "'", "'" + viewContacto.Apellido + "'", Encoding.UTF8);
            //Aquí ponemos el asunto del correo
            mail.Subject = "  '" + viewContacto.Asunto + "' ";
            //Aquí ponemos el mensaje que incluirá el correo
            mail.Body = "'" + TextoIngresado + "''";
            mail.IsBodyHtml = true;
            //Especificamos a quien enviaremos el Email, no es necesario que sea Gmail, puede ser cualquier otro proveedor
            mail.To.Add(Email);
            //Si queremos enviar archivos adjuntos tenemos que especificar la ruta en donde se encuentran
            // mail.Attachments.Add(new Attachment(@"C:\Documentos\carta.docx"));
            //Configuracion del SMTP
            SmtpServer.Port = 587; //Puerto que utiliza Gmail para sus servicios
            SmtpServer.Timeout = 900000;
            //Especificamos las credenciales con las que enviaremos el mail
            
            SmtpServer.Credentials = new System.Net.NetworkCredential("'"+ EmailIngresado +"'", "leo33244793");
          //  SmtpServer.Credentials = new System.Net.NetworkCredential("'" + EmailIngresado + "'", "");
            //SmtpServer.Host = "smtp.gmail.com";
            SmtpServer.EnableSsl = true;
            try
            {
                SmtpServer.Send(mail);
            }
            catch (Exception ex)
            {
               
            }
        }

        private void Validar()
        {
            StringBuilder errores = new StringBuilder();
            if (String.IsNullOrEmpty(viewContacto.Apellido))
            {
                errores.AppendLine(Recursos.Contacto.ApellidoRequerido);
            }
            if (String.IsNullOrEmpty(viewContacto.Nombre))
            {
                errores.AppendLine(Recursos.Contacto.NombreRequerido);
            }
            if (String.IsNullOrEmpty(viewContacto.Asunto))
            {
                errores.AppendLine(Recursos.Contacto.AsuntoRequerido);
            }
            if (String.IsNullOrEmpty(viewContacto.Email) & String.IsNullOrEmpty(viewContacto.Telefono) & String.IsNullOrEmpty(viewContacto.Celular))
            {
                errores.AppendLine(Recursos.Contacto.EmailTelefonoCelular);
            }
            if (!String.IsNullOrEmpty(errores.ToString()))
            {
                throw new ApplicationException(errores.ToString());
            }
        }
        public void Volver()
        {
            HttpContext.Current.Response.Redirect("HomeWF.aspx");
        }
    }
}
